using System;
using CloudStorage.API;
using CloudStorage.API.Messages;

namespace CloudStorage.Factories
{
  /// <summary>
  /// Access to Cloud Storage Queues
  /// </summary>
  public interface IQueueStorageAccountFactory
  {
    /// <summary>
    /// Get access to a Cloud Queue Storage Account
    /// </summary>
    /// <param name="baseUri">Address of the account</param>
    /// <param name="accountName">Name of the account holder</param>
    /// <param name="base64Key">Private key to access the account</param>
		/// <returns><see cref="IQueueStorageAccount"/></returns>
    IQueueStorageAccount GetQueueStorage(Uri baseUri, string accountName, string base64Key);

		/// <summary>
		/// Get access to a Cloud Queue Storage Account
		/// </summary>
		/// <param name="storageAccountInfo"><see cref="IStorageAccountInfo"/></param>
		/// <returns><see cref="IQueueStorageAccount"/></returns>
		IQueueStorageAccount GetQueueStorage(IStorageAccountInfo storageAccountInfo);
  }
}